
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
  
CREATE Procedure [dbo].[SP_TDMOVI_BANC_I01]      
/*-------------------------------------------------------*/                            
/*---Empresa              : OFISIS S.A.                --*/                            
/*---Cliente              : OFISIS                 --*/                                    
/*---Sistema              : Tesoreria                  --*/                            
/*---Mödulo               : Empresa                    --*/                            
/*---Programa             : Grabaciön Detalle          --*/                            
/*---                       Movimiento Bancos          --*/                            
/*---                       (Egresos)                  --*/                            
/*---Script               : tdbanc_p.sql               --*/                            
/*---Nombre SP            : SP_TDMOVI_BANC_I03         --*/                            
/*---Desarrollado por     : Javier Flores A.           --*/                            
/*---Fecha Creaciön       : 18/06/1999                 --*/                            
/*---Base Datos           : Microsoft Sql Server       --*/                            
/*---Versiön              : 7.0                        --*/                            
/*---Invoca a SP          :                            --*/                            
/*-------------------------------------------------------*/                            
/*-------------------------------------------------------*/                            
/*---Modificado 1 por     : Eduardo Vivar Pomiano      --*/                            
/*---Fecha Modificaciön   : 03/04/2001                 --*/                            
/*---Detalle Modificaciön : Permite grabar docs Clientes en EGRESOS--*/                            
/*-------------------------------------------------------*/                            
/*-------------------------------------------------------*/                            
/*---Modificado 2 por     : Carlos Marquez Escobar     --*/                            
/*---Fecha Modificaciön   : 25/08/2004                 --*/                            
/*---Detalle Modificaciön : Cod Operac y Unidades Cont en Retencio.--*/                            
/*-------------------------------------------------------*/                            
/*-------------------------------------------------------*/                            
/*---Modificado 3 por     : Reynaldo Menacho           --*/                            
/*---Fecha Modificaciön   : 22/04/2005                 --*/                            
/*---Detalle Modificaciön : Busqueda del estado actual o anterior    --*/                            
/*---      de los documentos             --*/                            
/*-------------------------------------------------------*/                            
/*-------------------------------------------------------*/                            
/*---Modificado 4 por     : Carlos Marquez Escobar     --*/                            
/*---Fecha Modificaciön   : 24/01/2005                 --*/                            
/*---Detalle Modificaciön : Grabar Imp. Reten. en la Mon Factura Detalle--*/                            
/*-------------------------------------------------------*/                        
/*---Modificado 5 por     : Miguel Carrasco     --*/                            
/*---Fecha Modificaciön   : 02/07/2009                 --*/                            
/*---Detalle Modificaciön : Tipo de operacion detraccion--*/                            
/*-------------------------------------------------------*/            
/*-------------------------------------------------------*/                        
/*---Modificado 6 por     : Daniel Gutierrez     --*/                                           
/*---Fecha Modificaciön   : 18/08/2011                 --*/                            
/*---Detalle Modificaciön : Asignacion de parametros del SP --*/            
/*---para que se guarde a la tabla temporal #TWMOVI_BANC_I02--*/                   
/*-------------------------------------------------------*/                            
/*-------------------------------------------------------*/                            
/*---Comentarios             --*/                            
/*---       --*/                            
/*---                                                  --*/                
/*-------------------------------------------------------*/                            
/*-------------------------------------------------------*/                            
/*---Drop Proc SP_TDMOVI_BANC_I01                      --*/                            
/*---Grant Execute on SP_TDMOVI_BANC_I01 to public     --*/                            
/*---	EXEC SP_TDMOVI_BANC_I01                                --*/                            
/*-------------------------------------------------------*/                            
/*  

DROP TABLE #TWRETE_BANC
Create Table #TWRETE_BANC (
	CO_EMPR	Varchar(02)   Null,
	CO_PROV	Varchar(20)   Null,
	TI_DOCU		Varchar(3)     Null,
	NU_DOCU 	Varchar(20)   Null,
	NU_SECU 	Integer,
	FE_EMIS		DateTime,
	IM_TOTA_CONV	Numeric(16,4),
	IM_PAGO_CONV	Numeric(16,4),
	IM_RETE_CONV	Numeric(16,2),
	ST_RETE	Varchar(01),
	TI_DOCU_CLAV	Varchar(03) Null,
	NU_DOCU_CLAV	Varchar(20) Null,
	TI_DOCU_RETE	Varchar(03) Null,
	NU_DOCU_RETE	Varchar(20) Null,
	NU_COMP_BANC	Varchar(08) Null )     

Create Table #TWMOVI_BANC_E02(
CO_EMPR   VARCHAR(2) NULL,
CO_USUA_MODI VARCHAR(8) NULL,
CO_BANC   VARCHAR(3) NULL,
NU_CNTA_BANC VARCHAR(20) NULL,
AA_BNCO   VARCHAR(4) NULL,			
MM_BNCO   VARCHAR(2) NULL,
TI_MOVI_BANC VARCHAR(1) NULL,
NU_COMP_BANC VARCHAR(8) NULL,
NU_SECU INT NULL,
TI_ENTI   VARCHAR(1) NULL,
CO_ENTI   VARCHAR(20) NULL,
CO_TIPO_DOCU VARCHAR(3) NULL,
NU_DOCU_BANC VARCHAR(20) NULL,
CO_MONE_DOCU VARCHAR(3) NULL,
FE_DOCU DATETIME NULL,
FE_EMIS DATETIME NULL,
FE_PROG DATETIME NULL,
IM_DOCU NUMERIC(16,4) NULL,
IM_SALD_DOCU NUMERIC(16,4) NULL,
IM_DETA NUMERIC(16,4) NULL,
DE_OBSE   VARCHAR(100) NULL,
ST_CIER_DOCU VARCHAR(1) NULL,
TI_DOCU VARCHAR(3) NULL,
FA_TIPO_CAMB NUMERIC(15,6) NULL,
CO_MONE VARCHAR(3) NULL,
IM_SALD_CONV NUMERIC(16,4) NULL,
IM_DETA_NEGA NUMERIC(16,4) NULL,
NU_CORR_COMP VARCHAR(20) NULL,
TI_MOVI_OPER VARCHAR(1) NULL,
CO_CNTA_EMPR VARCHAR(20) NULL,
CO_ORDE_SERV VARCHAR(20) NULL,
NU_SECU_PRPA INT NULL,
CO_UNID_CNTB VARCHAR(3) NULL,
FA_CAMB_EXTR NUMERIC(15,6) NULL)
    
SELECT * FROM  #TWMOVI_BANC_E02
     
 Insert into #TWMOVI_BANC_E02 (
CO_EMPR, CO_USUA_MODI , CO_BANC, NU_CNTA_BANC, AA_BNCO, MM_BNCO,TI_MOVI_BANC,
NU_COMP_BANC, NU_SECU ,TI_ENTI, CO_ENTI, CO_TIPO_DOCU , NU_DOCU_BANC ,CO_MONE_DOCU,
FE_DOCU, FE_EMIS, FE_PROG, IM_DOCU, IM_SALD_DOCU, IM_DETA , DE_OBSE, ST_CIER_DOCU,TI_DOCU,
FA_TIPO_CAMB, CO_MONE, IM_SALD_CONV, IM_DETA_NEGA, NU_CORR_COMP, TI_MOVI_OPER,
CO_CNTA_EMPR, CO_ORDE_SERV, NU_SECU_PRPA, CO_UNID_CNTB , FA_CAMB_EXTR)
VALUES(
'01','OFISIS', 'CRE', '192-0248352-0-05', '2012', '02','E',
'00200009',   NULL,  'P',
'20385353406',  'FAC', '0002-0000000434',
'SOL',  '2012-02-01', '2012-02-01','2012-02-01',1652,
1652, 1000, '',
'N', 'LET', 2.87, 'SOL',
1652, 1000, '1202000001',
'', '', '', null,'001',
1)    
   
delete    #TWMOVI_BANC_E02
                     
*/  

    
As                            
Declare                                     
    @VNNU_SECU TD_IN_001,     @VNIM_MOVI_ANTE  TD_NU_016_004,  @VNIM_TOTA TD_NU_016_004,                                    
    @VNIM_CONV_ANTE TD_NU_016_004,   @VNNU_REGI TD_IN_001,    @VSST_SIGN TD_VC_001,                                    
    @VNIM_TOTA_CLIE TD_NU_016_004, @VNIM_TOTA_PROV  TD_NU_016_004, @VNIM_CONV_DOCU TD_NU_016_004,                                    
    @VSCO_MONE_NACI TD_VC_003, @VSCO_MONE_EXTR TD_VC_003       , @VSCO_TIPO_EGRE  TD_VC_003,                                    
    @VSCO_UNID_CONC TD_VC_003,                                    
    @VSCO_ESTA_LETR   TD_VC_003, @VSTI_DOCU_RETE   TD_VC_003,                                     
    @VSNO_ENTI TD_VC_100, @VSNU_RUCC TD_VC_020,                                     
    @VSNU_CHEQ TD_VC_020, @VSNU_DOCU_BANC TD_VC_020,                                    
    @VSNU_COMP_BACA TD_VC_020,                                     
    @VNIM_TOTA_DIST TD_NU_016_004, @VSTI_CAMB TD_VC_001, @VSTI_ORIG TD_VC_001, @VDFE_OPER TD_DT_001,                                    
    @VSCO_COND_CONT TD_VC_003, @VSNU_SERI TD_VC_008, @VSST_APRO_CXPA TD_VC_001, @VNNU_CONT TD_IN_001,                                
    @VSCO_ESTA_ORIG TD_VC_001,@VSCO_TIPO_OPER TD_VC_003, @VSST_PAGO_DETR TD_VC_001,@VSST_DETR_CALC TD_VC_001,                      
    @INIM_DETR_CALC TD_NU_016_004,      
               
@ISCO_EMPR     TD_VC_002,                                     
 @ISCO_USUA_MODI TD_VC_008_USUA,                                    
 @ISCO_BANC     TD_VC_003,                                     
 @ISNU_CNTA_BANC TD_VC_020,                                    
 @ISAA_BNCO   TD_VC_004,                                     
 @ISMM_BNCO   TD_VC_002,                            
 @ISTI_MOVI_BANC TD_VC_001,                                      
 @ISNU_COMP_BANC TD_VC_008,                                     
 @INNU_SECU TD_IN_001,                                    
 @ISTI_ENTI   TD_VC_001,                                     
 @ISCO_ENTI   TD_VC_020,                                    
 @ISTI_DOCU_ENTI TD_VC_003,                                    
 @ISNU_DOCU_ENTI TD_VC_020,                                    
 @ISCO_MONE_DOCU TD_VC_003,                                    
 @IDFE_DOCU   TD_DT_001,                                    
 @IDFE_EMIS   TD_DT_001,                                    
 @IDFE_PROG   TD_DT_001,                                    
 @INIM_DOCU   TD_NU_016_004,                                    
 @INIM_SALD_DOCU TD_NU_016_004,                                    
 @INIM_DETA   TD_NU_016_004,                                     
 @ISDE_OBSE   TD_VC_100,                                    
 @ISST_CIER_DOCU TD_VC_001_SINO,                                    
 @ISTI_DOCU   TD_VC_003,                                    
 @INFA_TIPO_CAMB TD_NU_015_006,                                    
 @ISCO_MONE   TD_VC_003,                                      
 @INIM_SALD_CONV TD_NU_016_004,                                    
 @INIM_DETA_NEGA TD_NU_016_004,                                    
 @ISNU_CORR_COMP TD_VC_020,                                    
 @ISTI_MOVI_OPER TD_VC_001,                      
 @ISCO_CNTA_EMPR TD_VC_020,                                    
 @ISCO_ORDE_SERV TD_VC_020,                                    
 @INNU_SECU_PRPA TD_IN_001,                          
 @ISCO_UNID_CNTB TD_VC_003,                          
 @INFA_CAMB_EXTR TD_NU_015_006          
                            
 Begin Tran SP_TDMOVI_BANC_I01                          
      
 Select               
 @ISCO_EMPR = CO_EMPR,               
 @ISCO_USUA_MODI = CO_USUA_MODI,                                
 @ISCO_BANC = CO_BANC,                                     
 @ISNU_CNTA_BANC = NU_CNTA_BANC,                                    
 @ISAA_BNCO = AA_BNCO,                                     
 @ISMM_BNCO = MM_BNCO,                            
 @ISTI_MOVI_BANC = TI_MOVI_BANC,                                      
 @ISNU_COMP_BANC = NU_COMP_BANC,                                     
 @INNU_SECU = NU_SECU,                                    
 @ISTI_ENTI = TI_ENTI,                                     
 @ISCO_ENTI = CO_ENTI,                                    
 @ISTI_DOCU_ENTI = CO_TIPO_DOCU,                                    
 @ISNU_DOCU_ENTI = NU_DOCU_BANC,                                    
 @ISCO_MONE_DOCU = CO_MONE_DOCU,                                    
 @IDFE_DOCU = FE_DOCU,                                    
 @IDFE_EMIS = FE_EMIS,                                    
 @IDFE_PROG = FE_PROG,                                    
 @INIM_DOCU = IM_DOCU,                                    
 @INIM_SALD_DOCU = IM_SALD_DOCU,                                    
 @INIM_DETA = IM_DETA,                                     
 @ISDE_OBSE = DE_OBSE,                                    
 @ISST_CIER_DOCU = ST_CIER_DOCU,                                    
 @ISTI_DOCU = TI_DOCU,                                    
 @INFA_TIPO_CAMB = FA_TIPO_CAMB,                                    
 @ISCO_MONE = CO_MONE,                                      
 @INIM_SALD_CONV = IM_SALD_CONV,                                    
 @INIM_DETA_NEGA = IM_DETA_NEGA,                                    
 @ISNU_CORR_COMP = NU_CORR_COMP,                                    
 @ISTI_MOVI_OPER = TI_MOVI_OPER,                                    
 @ISCO_CNTA_EMPR = CO_CNTA_EMPR,                                    
 @ISCO_ORDE_SERV = CO_ORDE_SERV,                                    
 @INNU_SECU_PRPA = NU_SECU_PRPA,                          
 @ISCO_UNID_CNTB = CO_UNID_CNTB,                          
 @INFA_CAMB_EXTR = FA_CAMB_EXTR              
 FROM #TWMOVI_BANC_E02      
                    
 Select @VSCO_MONE_NACI = CO_MONE_DEFA,                                    
   @VSCO_MONE_EXTR = CO_MONE_EXTR,                                    
   @VSCO_COND_CONT = CO_COND_CONT,                                    
   @VSCO_TIPO_EGRE = CO_TIPO_OPEG,  ---- Egreso o Cargo                                    
   @VSST_APRO_CXPA = ST_APRO_CXPA                                    
 From TMPARA_TESO                                    
 Where CO_EMPR = @ISCO_EMPR                                    
                             
 -- Documento Retencion ---                            
 Select @VSTI_DOCU_RETE = TI_DOCU                                    
 From TTDOCU_CNTB                                    
 Where ST_DOCU_0021 = 'S'                                    
                             
 If Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''                                
 -- Se busca el estado actual del documento  
 
 Exec SP_TTESTA_ORIG_Q02 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI, @VSCO_ESTA_ORIG output                                
                             
 If @ISCO_MONE_DOCU != @ISCO_MONE                                    
 Begin                                    
  Select @VSTI_CAMB = TI_CAMB, @VSTI_ORIG = TI_ORIG                                    
  From TTFACA_OPCI                                    
  Where CO_EMPR = @ISCO_EMPR                                    
  And CO_MODU = 'TEEM0001'                                    
  And CO_MENU = 'FTEEMAI'                                   
                              
  If ( @VSTI_CAMB Is Null Or @VSTI_ORIG Is Null )                                    
   Select @VSTI_CAMB = TI_CAMB, @VSTI_ORIG = TI_ORIG                                    
   From TMPARA_TESO                                    
   Where CO_EMPR = @ISCO_EMPR                             
                             
  Select @VDFE_OPER = FE_OPER,                                    
    @VSCO_UNID_CONC = CO_UNID_CONC,                      
    @VSCO_TIPO_OPER = CO_TIPO_OPER,                       
    @VSST_PAGO_DETR = ST_PAGO_DETR                                   
  From   TCMOVI_BANC                                    
  Where  CO_EMPR = @ISCO_EMPR                   
  and    CO_UNID_CONC = @ISCO_UNID_CNTB                          
  and    CO_BANC = @ISCO_BANC                                     
  and    NU_CNTA_BANC = @ISNU_CNTA_BANC                                      
  and    AA_BNCO = @ISAA_BNCO                                    
  and    MM_BNCO = @ISMM_BNCO                                     
  and    TI_MOVI_BANC = @ISTI_MOVI_BANC                                    
  and    NU_COMP_BANC = @ISNU_COMP_BANC                                     
                             
  Select @VNIM_CONV_DOCU = (Select OFITESO.dbo.FN_TCFACT_CAMB_Q05(@ISCO_MONE, @ISCO_MONE_DOCU,                                     
  @VDFE_OPER, @INIM_DETA, @VSTI_CAMB, @VSTI_ORIG, 'N', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, @INFA_TIPO_CAMB))                                    
                             
  Select @VNIM_CONV_DOCU = Round(@VNIM_CONV_DOCU, 2)                                    
 End                                    
 Else                       
 Begin                                    
  Select @VSCO_UNID_CONC = CO_UNID_CONC,                      
  @VSCO_TIPO_OPER = CO_TIPO_OPER,                      
  @VSST_PAGO_DETR = ST_PAGO_DETR                                   
  From   TCMOVI_BANC                                    
  Where  CO_EMPR = @ISCO_EMPR                          
  and    CO_UNID_CONC = @ISCO_UNID_CNTB                          
  and    CO_BANC = @ISCO_BANC                                     
  and    NU_CNTA_BANC = @ISNU_CNTA_BANC                                      
  and    AA_BNCO = @ISAA_BNCO                                    
  and    MM_BNCO = @ISMM_BNCO                                     
  and    TI_MOVI_BANC = @ISTI_MOVI_BANC                                    
  and    NU_COMP_BANC = @ISNU_COMP_BANC                                     
                              
  Select @VNIM_CONV_DOCU = @INIM_DETA                                            
                             
 End                                    
                             
 If @INNU_SECU IS NULL                                    
 Begin                                    
                      
  Select @VNNU_SECU   = NU_SECU                                    
  From   TDMOVI_BANC                                    
  Where  CO_EMPR = @ISCO_EMPR                                    
  and    CO_UNID_CONC = @ISCO_UNID_CNTB                          
  and    CO_BANC = @ISCO_BANC                                    
  and    NU_CNTA_BANC = @ISNU_CNTA_BANC                                    
  and    AA_BNCO = @ISAA_BNCO                                    
  and    MM_BNCO = @ISMM_BNCO                               
  and    TI_MOVI_BANC = @ISTI_MOVI_BANC                                    
  and    NU_COMP_BANC = @ISNU_COMP_BANC                                    
                             
  If @VNNU_SECU > 0                                    
   Select @VNNU_SECU = @VNNU_SECU + 1                                    
  Else                                    
   Select @VNNU_SECU = 1                                       
                             
  Select @VNNU_CONT = IsNull(Count (CO_EMPR),0) From #TWRETE_BANC                                  
                             
  IF @ISTI_DOCU_ENTI = @VSTI_DOCU_RETE And @VNNU_CONT != 0                                  
  Begin                                    
   Select @VSNU_SERI = Substring(@ISNU_DOCU_ENTI, 1, Patindex('%-%', @ISNU_DOCU_ENTI)-1)         
   /* Genero el œltimo correlativo para el documento comp. de retenci½n */                                    
   Exec SP_TTULTI_CORR_I01 @ISCO_EMPR, @ISCO_USUA_MODI, @ISTI_DOCU_ENTI, @VSNU_SERI, @ISNU_DOCU_ENTI OUTPUT                                    
  End                                    
                        

                           
 ---------- TIPO DE OPERACION DETRACCION ---------                        
   SELECT @VSST_DETR_CALC = ST_DETR_CALC                      
   FROM TTTIPO_OPER               
   WHERE CO_EMPR = @ISCO_EMPR                      
   AND CO_TIPO_OPER = @VSCO_TIPO_OPER                      
                      
  IF ISNULL(@VSST_DETR_CALC,'N') = 'S' AND ISNULL(@VSST_PAGO_DETR,'N') = 'S'                      
   BEGIN                      
     SET @INIM_DETR_CALC = @INIM_DETA                      
   END                       
  ELSE                      
   BEGIN          
     SET @INIM_DETR_CALC = 0                      
   END                      
                       
 -----------------------------------------------------                       
         
                        
  Insert into TDMOVI_BANC (CO_EMPR, CO_BANC, NU_CNTA_BANC, AA_BNCO, MM_BNCO, TI_MOVI_BANC,                                    
  NU_COMP_BANC, NU_SECU, TI_ENTI, CO_ENTI, TI_DOCU_ENTI, NU_DOCU_ENTI, CO_MONE_DOCU, FE_EMIS,                                 
  FE_DOCU, FE_PROG, IM_DOCU, IM_SALD_DOCU, IM_DETA, IM_CONV_DOCU, DE_OBSE, ST_CIER_DOCU,                                 
  IM_DETA_NEGA, IM_SALD_CONV, NU_CORR_COMP, TI_MOVI_OPER, CO_CNTA_EMPR, CO_ORDE_SERV,                                 
  NU_SECU_PRPA, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI, CO_UNID_CONC, FA_CAMB_EXTR,IM_DETR_CALC)                          
  Values (@ISCO_EMPR, @ISCO_BANC, @ISNU_CNTA_BANC, @ISAA_BNCO, @ISMM_BNCO, @ISTI_MOVI_BANC,                                    
  @ISNU_COMP_BANC, @VNNU_SECU, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI, @ISCO_MONE_DOCU,                                   
@IDFE_EMIS, @IDFE_DOCU, @IDFE_PROG, @INIM_DOCU, @INIM_SALD_DOCU, @INIM_DETA, @VNIM_CONV_DOCU,                                     
  @ISDE_OBSE, @ISST_CIER_DOCU, @INIM_DETA_NEGA , @INIM_SALD_CONV, @ISNU_CORR_COMP, @ISTI_MOVI_OPER,                                 
  @ISCO_CNTA_EMPR, @ISCO_ORDE_SERV, @INNU_SECU_PRPA, @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE(),                       
  @ISCO_UNID_CNTB, @INFA_CAMB_EXTR,@INIM_DETR_CALC)                          
                         
                            
  If @@error <> 0                                    
  Begin                          
   Rollback Tran SP_TDMOVI_BANC_I01                            
   Return                            
  End                                        
          
  
                             
  If @VSST_APRO_CXPA = 'S'                                    
  Begin                                
   Update TDPROG_PAGO                                    
   Set   TI_SITU = 'PAG',                              
   CO_USUA_MODI = @ISCO_USUA_MODI,                                   
   FE_USUA_MODI = Getdate()                                           
   Where CO_EMPR     = @ISCO_EMPR                                    
   And  CO_PROV      = @ISCO_ENTI                                    
   And  CO_TIPO_DOCU = @ISTI_DOCU_ENTI                                    
   And  NU_DOCU_PROV = @ISNU_DOCU_ENTI                                    
   And  NU_SECU      = @INNU_SECU_PRPA                                    
                               
   If @@error <> 0                                    
   Begin                                    
    Rollback Tran SP_TDMOVI_BANC_I01                                    
    Return                                    
   End                                        
  End                                
                             
  If @ISST_CIER_DOCU = 'S' And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''                                
  Begin   
                              
   --Se cancela el documento y se graba en tabla de kardex de estados de documentos                         
   Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI,                                 
   @VNIM_CONV_DOCU, 'PAG', @ISCO_USUA_MODI, @ISST_CIER_DOCU                                
                               
   If @@error <> 0                                  
   Begin                                  
    Rollback Tran SP_TDMOVI_BANC_I01                                 
    Return                                  
   End                                      
  End                                
  Else                                 
   If @ISST_CIER_DOCU = 'N' And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''                           
   Begin 
                                  
    --Se cancela el documento y se graba en tabla de kardex de estados de documentos                                
    Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI,                                 
    @VNIM_CONV_DOCU, @VSCO_ESTA_ORIG, @ISCO_USUA_MODI, @ISST_CIER_DOCU                                
                                
    If @@error <> 0                                  
    Begin                        
     Rollback Tran SP_TDMOVI_BANC_I01                                 
     Return                                  
    End                                      
   End                                 
  End                                    
 Else                                     
 Begin                                    
  Select @VNIM_CONV_ANTE = Isnull(IM_CONV_DOCU,0)                                    
  From  TDMOVI_BANC                                     
  Where CO_EMPR = @ISCO_EMPR                                    
  And   CO_UNID_CONC = @ISCO_UNID_CNTB                          
  And   CO_BANC = @ISCO_BANC                   
  And   NU_CNTA_BANC = @ISNU_CNTA_BANC                    
  And   AA_BNCO = @ISAA_BNCO                                    
  And   MM_BNCO = @ISMM_BNCO                                    
  And   TI_MOVI_BANC = @ISTI_MOVI_BANC                                    
  And   NU_COMP_BANC = @ISNU_COMP_BANC                                    
  And   NU_SECU = @INNU_SECU                              
                      
 ------- DETRACCION -----                      
                      
   SELECT @VSST_DETR_CALC = ST_DETR_CALC                      
   FROM TTTIPO_OPER                      
   WHERE CO_EMPR = @ISCO_EMPR                      
   AND CO_TIPO_OPER = @VSCO_TIPO_OPER                      
                      
                      
    IF ISNULL(@VSST_DETR_CALC,'N') = 'S' AND ISNULL(@VSST_PAGO_DETR,'N') = 'S'                      
   BEGIN                      
     SET @INIM_DETR_CALC = @INIM_DETA                      
   END                       
  ELSE                      
   BEGIN                       
     SET @INIM_DETR_CALC = 0                      
   END                             
                             
  --------------------------------------                      
                      
  IF RTRIM(ISNULL(@ISCO_CNTA_EMPR, '')) = ''                                  
   Update TDMOVI_BANC                                   
   Set IM_DETA = @INIM_DETA,                                  
   IM_CONV_DOCU = @VNIM_CONV_DOCU,                                 
   DE_OBSE = @ISDE_OBSE,                                  
   ST_CIER_DOCU = @ISST_CIER_DOCU,                                  
   IM_DETA_NEGA = @INIM_DETA_NEGA,                      
   IM_DETR_CALC = @INIM_DETR_CALC,                                
   FE_USUA_MODI = getdate(),                                  
   CO_USUA_MODI = @ISCO_USUA_MODI                                  
   Where CO_EMPR = @ISCO_EMPR                                  
   and   CO_UNID_CONC = @ISCO_UNID_CNTB                          
   And   CO_BANC = @ISCO_BANC                                  
   And   NU_CNTA_BANC = @ISNU_CNTA_BANC                                  
   And   AA_BNCO = @ISAA_BNCO                                  
   And   MM_BNCO = @ISMM_BNCO                
   And   TI_MOVI_BANC = @ISTI_MOVI_BANC                                  
   And   NU_COMP_BANC = @ISNU_COMP_BANC                                  
   And   NU_SECU = @INNU_SECU                                  
  ELSE                                  
   Update TDMOVI_BANC                                   
   Set TI_MOVI_OPER = @ISTI_MOVI_OPER,                                  
   CO_CNTA_EMPR = @ISCO_CNTA_EMPR,                                  
   TI_ENTI = @ISTI_ENTI,                                  
   CO_ENTI = @ISCO_ENTI,                                  
   CO_ORDE_SERV = @ISCO_ORDE_SERV,                                 
   IM_DETA = @INIM_DETA,                                  
   IM_CONV_DOCU = @VNIM_CONV_DOCU,                                                
   DE_OBSE = @ISDE_OBSE,                                  
   ST_CIER_DOCU = @ISST_CIER_DOCU,                                  
   IM_DETA_NEGA = @INIM_DETA_NEGA,                       
   IM_DETR_CALC = @INIM_DETR_CALC,                                  
   FE_USUA_MODI = getdate(),                                  
   CO_USUA_MODI = @ISCO_USUA_MODI                                  
   Where CO_EMPR = @ISCO_EMPR                                  
   And   CO_UNID_CONC = @ISCO_UNID_CNTB                          
   And   CO_BANC = @ISCO_BANC                                  
   And   NU_CNTA_BANC = @ISNU_CNTA_BANC                                  
   And   AA_BNCO = @ISAA_BNCO                                  
   And   MM_BNCO = @ISMM_BNCO                                  
   And   TI_MOVI_BANC = @ISTI_MOVI_BANC                            
   And   NU_COMP_BANC = @ISNU_COMP_BANC                                  
   And   NU_SECU = @INNU_SECU                                  
                             
  If @@error <> 0                                    
  Begin                                    
   Rollback Tran SP_TDMOVI_BANC_I01                                    
   Return                                    
  End                                        
                             
  Select @VNIM_CONV_DOCU = @VNIM_CONV_DOCU - @VNIM_CONV_ANTE                                
                              
  If @ISST_CIER_DOCU = 'S' And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''                                
  Begin                                
   --Se cancela el documento y se graba en tabla de kardex de estados de documentos                                
   Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI,                                 
   @VNIM_CONV_DOCU, 'PAG', @ISCO_USUA_MODI, @ISST_CIER_DOCU                                
                               
   If @@error <> 0                                  
   Begin                                  
   Rollback Tran SP_TDMOVI_BANC_I01                                 
   Return                                  
   End                                      
  End                                
  Else                                 
  If @ISST_CIER_DOCU = 'N' And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''                                
  Begin                                
   --Se cancela el documento y se graba en tabla de kardex de estados de documentos                                
   Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI,       
   @VNIM_CONV_DOCU, @VSCO_ESTA_ORIG, @ISCO_USUA_MODI, @ISST_CIER_DOCU                                
                               
   If @@error <> 0                                  
   Begin                                  
    Rollback Tran SP_TDMOVI_BANC_I01                                 
    Return                                  
   End                                      
  End                                
                             
 End                                    
                             
 Select @VNIM_MOVI_ANTE  = Isnull(IM_MOVI,0)                                     
 From   TCMOVI_BANC                                    
 Where  CO_EMPR = @ISCO_EMPR                                 
 and    CO_UNID_CONC = @ISCO_UNID_CNTB                          
 and    CO_BANC = @ISCO_BANC                                     
 and    NU_CNTA_BANC = @ISNU_CNTA_BANC                                      
 and    AA_BNCO = @ISAA_BNCO                                    
 and    MM_BNCO = @ISMM_BNCO                                     
 and    TI_MOVI_BANC = @ISTI_MOVI_BANC                                    
 and    NU_COMP_BANC = @ISNU_COMP_BANC                                     
                             
 /* Sumo todos los documentos de clientes */                                    
                             
 Select @VNIM_TOTA_CLIE = Isnull(Sum(Isnull(IM_DETA_NEGA,0)),0)             From TDMOVI_BANC                                    
 Where CO_EMPR = @ISCO_EMPR                                    
 and   CO_UNID_CONC = @ISCO_UNID_CNTB                          
 And   CO_BANC = @ISCO_BANC                                    
 And   NU_CNTA_BANC = @ISNU_CNTA_BANC                                    
 And   AA_BNCO = @ISAA_BNCO                           
 And  MM_BNCO = @ISMM_BNCO                                    
 And   TI_MOVI_BANC = @ISTI_MOVI_BANC                                    
 And   NU_COMP_BANC = @ISNU_COMP_BANC                            
 And  TI_ENTI = 'C'                                    
 And RTRIM(ISNULL(CO_CNTA_EMPR, '')) = ''                                    
                             
 /* Sumo todos los documentos de proveedores */                                    
                             
 Select @VNIM_TOTA_PROV = Isnull(Sum(Isnull(IM_DETA_NEGA,0)),0)                                    
 From TDMOVI_BANC                                    
 Where CO_EMPR = @ISCO_EMPR                                    
 and   CO_UNID_CONC = @ISCO_UNID_CNTB                          
 And   CO_BANC = @ISCO_BANC                                    
 And   NU_CNTA_BANC = @ISNU_CNTA_BANC                                    
 And   AA_BNCO = @ISAA_BNCO                                    
 And   MM_BNCO = @ISMM_BNCO                                    
 And   TI_MOVI_BANC = @ISTI_MOVI_BANC                                    
 And   NU_COMP_BANC = @ISNU_COMP_BANC                                    
 And   TI_ENTI = 'P'                                    
 And RTRIM(ISNULL(CO_CNTA_EMPR, '')) = ''                                    
                             
 Select  @VNIM_TOTA_DIST = Isnull(Sum(Isnull(PatIndex(TI_MOVI_OPER, 'C')* IM_DETA - PatIndex(TI_MOVI_OPER, 'A')*                          
IM_DETA,0)),0)                                     
 From  TDMOVI_BANC                                    
 Where CO_EMPR = @ISCO_EMPR                                    
 and CO_UNID_CONC = @ISCO_UNID_CNTB                          
 And CO_BANC = @ISCO_BANC                                    
 And NU_CNTA_BANC = @ISNU_CNTA_BANC                        
 And AA_BNCO = @ISAA_BNCO                                    
 And MM_BNCO = @ISMM_BNCO                                    
 And TI_MOVI_BANC = @ISTI_MOVI_BANC                                    
 And NU_COMP_BANC = @ISNU_COMP_BANC                                    
 And RTRIM(ISNULL(CO_CNTA_EMPR, '')) != ''                                    
                             
 Select  @VNIM_TOTA = @VNIM_TOTA_PROV + @VNIM_TOTA_CLIE + ISNULL(@VNIM_TOTA_DIST,0)                                    
                             
 Update TCMOVI_BANC                                    
 Set IM_MOVI = Round(@VNIM_TOTA,2),                                    
 CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = getdate()                                             
 Where CO_EMPR = @ISCO_EMPR                                     
 And   CO_UNID_CONC = @ISCO_UNID_CNTB                          
 And   CO_BANC = @ISCO_BANC                                     
 And   NU_CNTA_BANC = @ISNU_CNTA_BANC                                     
 And   AA_BNCO = @ISAA_BNCO                                    
 And   MM_BNCO = @ISMM_BNCO                                   
 And   TI_MOVI_BANC = @ISTI_MOVI_BANC                                     
 And   NU_COMP_BANC = @ISNU_COMP_BANC                                     
                             
 If @@error <> 0                                    
 Begin                       
  Rollback Tran SP_TDMOVI_BANC_I01                                   
  Return                                    
 End                                      
                             
 Select @VNNU_CONT = IsNull(Count (CO_EMPR),0) From #TWRETE_BANC                                  
                             
 /* PARA COMPROBANTES DE RETENCION*/                                    
                             
 IF @ISTI_DOCU_ENTI = @VSTI_DOCU_RETE And @VNNU_CONT != 0                                  
 BEGIN                                    
                             
  Select  @VSNO_ENTI = NO_AUXI, @VSNU_RUCC = NU_RUCS                                    
  From  TMAUXI_EMPR                                     
  Where  CO_EMPR = @ISCO_EMPR                                    
  And TI_AUXI_EMPR = @ISTI_ENTI                                    
  And CO_AUXI_EMPR = @ISCO_ENTI                                    
                              
  Select  @VSNU_CHEQ = ISNULL(NU_CHEQ, ''),                                     
  @VSNU_DOCU_BANC = ISNULL(NU_DOCU_BANC, '')                                    
  From  TCMOVI_BANC                                    
  Where  CO_EMPR = @ISCO_EMPR                                     
  And CO_UNID_CONC = @ISCO_UNID_CNTB                          
  And CO_BANC = @ISCO_BANC                                     
  And NU_CNTA_BANC = @ISNU_CNTA_BANC                                     
And AA_BNCO = @ISAA_BNCO                  
  And MM_BNCO = @ISMM_BNCO                                     
  And TI_MOVI_BANC = @ISTI_MOVI_BANC                                     
  And NU_COMP_BANC = @ISNU_COMP_BANC                                     
                             
                             
  Select @VSNU_COMP_BACA = Case Len(Rtrim(Ltrim(@VSNU_CHEQ)))                                    
  When 0 Then  @VSNU_DOCU_BANC                                    
  Else @VSNU_CHEQ                                    
 End                                    
                             
  Insert Into TCCOMP_RETE                                
  (CO_EMPR, NU_COMP_RETE, FE_COMP_RETE, FA_TIPO_CAMB, CO_PROV, NO_PROV, NU_RUCC, CO_MONE,                                    
  CO_BANC, NU_CNTA_BANC, AA_BACA, MM_BACA, NU_COMP_BACA, NU_DOCU, TI_SITU, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI,                          
FE_USUA_MODI)                                    
  Values (@ISCO_EMPR, @ISNU_DOCU_ENTI, @IDFE_DOCU, @INFA_TIPO_CAMB, @ISCO_ENTI, @VSNO_ENTI, @VSNU_RUCC, @ISCO_MONE_DOCU,                          
@ISCO_BANC, @ISNU_CNTA_BANC,                                    
  @ISAA_BNCO, @ISMM_BNCO, @ISNU_COMP_BANC, @VSNU_COMP_BACA, 'ACT', @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE())                           
                                  
                              
  If @@error <> 0                                    
  Begin                                    
   Rollback Tran SP_TDMOVI_BANC_I01                                    
   Return                  
 End                                      
                             
 Insert Into TDCOMP_RETE           
 (CO_EMPR, NU_COMP_RETE,NU_SECU, TI_DOCU, NU_DOCU, FE_EMIS,                             
  IM_TOTA_CONV, IM_RETE_CONV, IM_PAGO_CONV,                             
  IM_COMP_PAGO,                            
  CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)                                    
 Select  CO_EMPR, @ISNU_DOCU_ENTI, NU_SECU, TI_DOCU, NU_DOCU, FE_EMIS,                             
  IM_TOTA_CONV, IM_RETE_CONV, IM_PAGO_CONV,                             
  ( dbo.FN_TCFACT_CAMB_Q02(@VSCO_MONE_NACI, @ISCO_MONE, @VDFE_OPER, IM_RETE_CONV, @VSTI_CAMB, @VSTI_ORIG, 'S',                          
@VSCO_MONE_NACI, @VSCO_MONE_EXTR, @INFA_TIPO_CAMB) ) IM_COMP_PAGO,                            
  @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE()                                
 From #TWRETE_BANC                            
 Where                             
 CO_EMPR = @ISCO_EMPR And                            
 CO_PROV = @ISCO_ENTI                            
                      
                             
 If @@error <> 0                                    
 Begin                                    
  Rollback Tran SP_TDMOVI_BANC_I01                                    
  Return                                    
 End                                    
                             
                   
 Insert Into                                
  TMDOCU_PROV(CO_EMPR, CO_PROV, CO_TIPO_DOCU, NU_DOCU_PROV,                                     
  CO_TIPO_OPER, CO_COND_PAGO, CO_UNID_CONC, FE_VENC,                                     
  FE_EMIS, FE_RECE, FE_PROG_PAGO, FE_REGI_COMP, FA_TIPO_CAMB, CO_MONE,                                     
  IM_BRUT_AFEC, IM_BRUT_INAF, IM_GAFI, IM_MORA, IM_FLET,                                
  ST_AFEC_GAFI, ST_AFEC_MORA, ST_AFEC_FLET, ST_DCT1_BRAF, ST_DCT1_BRIN,                                     
  ST_DCT1_GAFI, ST_DCT1_MORA, ST_DCT1_FLET, ST_DCT2_BRAF, ST_DCT2_BRIN,                                     
  ST_DCT2_GAFI, ST_DCT2_MORA, ST_DCT2_FLET, PC_DCT1, IM_DCT1,                                     
  PC_DCT2, IM_DCT2, PC_IMP1, IM_IMP1,                                     
  PC_IMP2, IM_IMP2, PC_IMP3, IM_IMP3, IM_TOTA,                                  
  IM_PAGA, CO_ESTA_DOCU, ST_CONT, TI_PROV, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)                                    
 Values( @ISCO_EMPR, @ISCO_ENTI, @VSTI_DOCU_RETE, @ISNU_DOCU_ENTI,                                     
  @VSCO_TIPO_EGRE, @VSCO_COND_CONT, @VSCO_UNID_CONC, @IDFE_DOCU,                                     
  @IDFE_DOCU, @IDFE_DOCU, @IDFE_DOCU, @IDFE_DOCU, @INFA_TIPO_CAMB, @ISCO_MONE_DOCU,                                    
  @INIM_DOCU, 0, 0, 0, 0,                                    
  'N', 'N', 'N','N', 'N',                                     
  'N', 'N', 'N','N', 'N',                                     
  'N', 'N', 'N', 0, 0,                                     
  0, 0, 0, 0,                                     
  0, 0, 0, 0, @INIM_DOCU,                                    
  @INIM_DOCU, 'PAG', 'N', 'J', @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE())                                
                             
 If @@error <> 0                                    
 Begin                                    
  Rollback Tran SP_TDMOVI_BANC_I01                                    
Return                                    
 End                                    
                             
 Delete #TWRETE_BANC                            
 Where                             
 CO_EMPR = @ISCO_EMPR And                            
 CO_PROV = @ISCO_ENTI                            
                            
                             
 END                                    
 /* Fin para Comprobantes de Retenci«n */                                     
                                    
commit Tran SP_TDMOVI_BANC_I01                           
                                    
/*------------------------ Fin ------------------------------*/ 
GO
